package com.github.common.extend.demo.config.transaction.distributed.message;

import java.util.Iterator;

/**
 * 消息存储器
 * @author X1993
 * @date 2022/9/22
 * @description
 */
public interface XMessageStorage<M extends XMessage> {

    /**
     * 存储
     * @param message
     */
    void save(M message);

    /**
     * 更新消息状态
     * @param message
     */
    void update(M message);

    /**
     * 重试消息，消息状态为{@link XMessage#UNSENT}或者{@link XMessage#FAIL_RETRY}
     * @return 按消息记录时间升序
     */
    Iterator<M> unsentMessages();

}
